{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Introduction\n",
    "\n",
    "This tutorial demonstrates how to perform a multi-objective neural architecture search (NAS) on a MobileNetV3 one-shot weight-sharing super-network [1] using the Intel® Neural Compressor Dynamic NAS (DyNAS) search approach. \n",
    "\n",
    "#### Background\n",
    "Neural architecture search, the study of automating the discovery of optimal deep neural network architectures for tasks in domains such as computer vision and natural language processing, has seen rapid growth in the machine learning research community. While there have been many recent advancements in NAS, there is still a significant focus on reducing the computational cost incurred when validating discovered architectures by making search more efficient. Evolutionary algorithms, specifically genetic algorithms, have a history of usage in NAS and continue to gain popularity as a highly efficient way to explore the architecture objective space. In this tutorial, we show how evolutionary algorithms [2] can be paired with lightly trained objective predictors in an iterative cycle to accelerate multi-objective architectural exploration. Specifically, we use a bi-level optimization approach [3] denoted as `dynas`. This technique is ~4x more sample efficient than typical one-shot predictor-based NAS approaches. \n",
    "\n",
    "#### Super-Networks\n",
    "\n",
    "The computational overhead of evaluating DNN architectures during the neural architecture search process can be very costly due to the training and validation cycles. To address the training overhead, novel weight-sharing approaches known as one-shot or super-networks have offered a way to mitigate the training overhead by reducing training times from thousands to a few GPU days. These approaches train a task-specific super-network architecture with a weight-sharing mechanism that allows the sub-networks to be treated as unique individual architectures. This enables sub-network model extraction and validation without a separate training cycle. This tutorial offers pre-trained Once-for-All (OFA) super-networks [1] for the image classification on ImageNet-ilsvrc2012 as well as Transformer Language Translation (based on [6]) for the language translation tasks.\n",
    "\n",
    "#### Methodology\n",
    "\n",
    "The flow of the DyNAS approach (`approach='dynas'`) is shown in the following figure. Currently, three pre-trained super-network options for the image classification task are provided. In the first phase of the search, a small population (`config.dynas.population`) of sub-networks are randomly sampled and evaluated (validation measurement) to provide the initial training set for the inner predictor loop. After the predictors are trained, a multi-objective evolutionary search (`search_algorithm`) is performed in the predictor objective space. After an extensive search is performed, the best performing sub-network configurations are selected to be the next iteration's validation population. The cycle continues until the search concludes when the user defined evaluation count (`config.dynas.num_evals`) is met. \n",
    "   \n",
    "<br>\n",
    "<div>\n",
    "<img src=\"DyNAS_flow.png\" width=\"750\"/>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Prerequisites\n",
    "\n",
    "For released version of Neural Compressor:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip -q install neural_compressor dynast==1.1.0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Alternatievely, if you have a local copy of https://github.com/intel/neural-compressor, you can uncomment and run the code below:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import sys\n",
    "# sys.path.insert(0,'<path to neural compressor>')\n",
    "# !pip install -qr <path to neural compressor>/requirements.txt\n",
    "# !pip install -q dynast==1.1.0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Import Packages"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from neural_compressor.conf.config import NASConfig\n",
    "from neural_compressor.experimental.nas import NAS"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Configure NAS Algorithm\n",
    "\n",
    "The `NASConfig` class allows us to define the appropriate parameters for determining how the neural architecture search is performed. Currently, the following multi-objective evolutionary algorithms are supported by the `dynas` approach: \n",
    "* `'nsga2'`\n",
    "* `'age'`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "config = NASConfig(approach='dynas', search_algorithm='nsga2')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Define Architecture\n",
    "We currently support pre-trained super-networks:\n",
    "\n",
    "1. Once-for-All (OFA) super-networks [4] for the image classification task on ImageNet-ilsvrc2012. In the case where the super-network PyTorch model download fails, you can manually copy the pre-trained models from https://github.com/mit-han-lab/once-for-all and place them in the `.torch/ofa_nets` path.\n",
    "2. Hardware-Aware-Transformers (HAT) supernetwork [6] for language translation task on WMT14 En-De. To run this supernetwork you have to manually download preprocessed dataset from https://github.com/mit-han-lab/hardware-aware-transformers/blob/master/configs/wmt14.en-de/get_preprocessed.sh and pretrained model from https://www.dropbox.com/s/pkdddxvvpw9a4vq/HAT_wmt14ende_super_space0.pt?dl=0\n",
    "3. BERT Base supernetwork finetuned on the [Stanford Sentiment Treebank](https://huggingface.co/datasets/sst2) dataset. You can download the model from [here](https://github.com/IntelLabs/DyNAS-T/blob/bert/model/models/fine_tuned_bert_sst2.pt) and the script to prepare the SST-2 dataset is available [here](https://github.com/NVIDIA/DeepLearningExamples/blob/master/PyTorch/LanguageModeling/BERT/data/create_datasets_from_start.sh#L21).\n",
    "\n",
    "Super-network options (choose 1): \n",
    "- `ofa_resnet50` - based on the ResNet50 architecture [4]. Search space of ~$10^{15}$ architectures.\n",
    "- `ofa_mbv3_d234_e346_k357_w1.0` - based on the MobileNetV3 architecture [5], width multiplier 1.0. Search space of ~$10^{19}$ architectures.\n",
    "- `ofa_mbv3_d234_e346_k357_w1.2` - based on the MobileNetV3 architecture [5], width multiplier 1.2. Search space of ~$10^{19}$ architectures.  \n",
    "- `transformer_lt_wmt_en_de` - based on the Transformer architecture [7].\n",
    "- `bert_base_sst2` - based on the BERT Base architecture, fine-tuned on the [Stanford Sentiment Treebank](https://huggingface.co/datasets/sst2) dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "config.dynas.supernet = 'transformer_lt_wmt_en_de'\n",
    "config.seed = 42"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Select performance metrics\n",
    "\n",
    "Performance metric options are as follows. You can use from 1 to 3 performance objectives to guide the search.\n",
    "\n",
    "Description:\n",
    "* `'accuracy_top1' or 'bleu' or 'accuracy_sst2'` - ImageNet Top-1 Accuracy (%) (for OFA supetnetworks) and Bleu (for Transformer LT) and accuracy on the SST2 dataset.\n",
    "* `'macs'` - Multiply-and-accumulates as measured from FVCore. \n",
    "* `'latency'` - Latency (inference time) measurement (ms).\n",
    "* `'params'` - Number of parameters in the model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "config.dynas.metrics = ['bleu', 'macs']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Search parameters\n",
    "\n",
    "* `config.dynas.population` - Size of the population for evolutionary/genetic algorithm (50 recommended)\n",
    "* `config.dynas.num_evals` - Validation measurement count, a higher count comes with greater computational cost but a higher chance of finding optimal sub-networks\n",
    "* `config.dynas.results_csv_path` - Location of the search (validation measurement) results. This file is also used to provide training data to the metric predictors. \n",
    "* `config.dynas.batch_size` - Batch size used during latency measurements.\n",
    "* `config.dynas.dataset_path` - For OFA it's a path to the imagenet-ilsvrc2012 dataset. This can be obtained at: https://www.image-net.org/download.php; For Transformer LT it's a path to preprocessed WMT EnDe directory (`(...)/data/binary/wmt16_en_de`)\n",
    "* `config.dynas.supernet_ckpt_path` - Transformer LT only. Path to downloaded pretrained super-network (`HAT_wmt14ende_super_space0.pt` file)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "config.dynas.population = 50\n",
    "config.dynas.num_evals = 250\n",
    "config.dynas.results_csv_path = 'results_transformerlt_macs.csv'\n",
    "config.dynas.batch_size = 64\n",
    "config.dynas.dataset_path = '/datasets/hat_dataset/data/binary/wmt16_en_de'  # example\n",
    "config.dynas.supernet_ckpt_path  ='/datasets/hat_dataset/HAT_wmt14ende_super_space0.pt'  # example"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Perform Search\n",
    "\n",
    "After the DyNAS configuration parameters are set, the search process can be started. Depending on how many evaluations `config.dynas.num_evals` were defined, the search time can vary from hours to days. \n",
    "The search process will populate the `config.dynas.results_csv_path` file and will also return a list of the final iteration's best sub-network population recommondation. \n",
    "\n",
    "Note: example search results are provided for the plotting section if you wish to skip this step for now. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "agent = NAS(config)\n",
    "results = agent.search()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plot Search Results in the Multi-Objective Space"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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f/tb7brLLruMNWvWsGHDhno/c++99zJx4sSQxz7xxBOpqqpi9+7dqCofffQRo0ePrt1e3/fT2HX4fD7uv/9+Tj/9dIYMGcKzzz7bpGuMB6rqBX4OzAbWAW+o6ppwnychkuGAIT3peVk7ul/cluPHtKWqswN3qgNnsrCrpiza4RkTVv6KN/FXvBl6x2PUu3dvfD4fe/bs+db6J554gilTppCTk8OCBQtITU3lww8/5J133mHJkiV8/fXXPPDAAwDcdNNNTJo0iZUrVzJ48GAeeeQRTj31VGpqati6dSsA06dPZ+zYsXg8Hu666y5mzpxJdnY2t956Kw8//HDteWtqamqraxvab/z48Tz99NN8/fXXR3WtI0aMYP369bXLDoeDBx54gMcee6ze/a+99lqWL1/O5s2bQx776quvZsaMGSxatIgRI0aQnHzoh3l9309j1/HCCy/Qvn17li5dytKlS3nuuedqv8fWQFVnqeopqtpHVUP/2jgGCVFNes2I73J670Hc8eG7TLnkMt7evJZKr4f0Gi/tOnSIdnjGhI36D0D5c4CgKRcjjjYhPxMuI0eO5J577uGGG27gyiuvpEePHsyZM4fx48eTlhYYwaljx46UlJRQXFzMueeeC8DNN9/MNddcAwSSyfTp03nooYeYPn0606dPZ8OGDaxevZqLLroICJSCunXrVnvesWPHAjS4X3FxMcXFxXzve4EB+ceNG8eHH37YpGuqb4TI66+/nokTJ9abbJxOJ/fffz+PP/74t0p69bn22msZO3Ys69ev57rrrmPRokUADX4/jV3Hxx9/zMqVK5k5c2btMTZt2sQpp5zSpOs0CZIMAV74Ops9FQd4fc0qfnPOeQC1ne6NaS208k3AE3z/FpI+Luzn2LJlC06nk86dO7Nu3bra9Q899BCXXnops2bNYuTIkcyePfuojz127FiuueYarrzySkSEvn37smrVKgYOHMiXX35Z72fS09OBQOKqb7/i4uKjjuOgFStWHNHy0uVyce+99zJp0qR6PzNu3Dgef/zxkI1bunbtSlJSEp988gmTJ0+uTYbHQlV5+umnGTVq1LfWH2zcY0JLiGrSvOL9fPZNHl3S2jBn62a2l7b+EeNN4lH1Q+UMCExXDZVvBNaFUWFhIXfeeSc///nPkcOG2srNzWXw4ME8+OCDnH766axfv56LLrqIl156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",
      "text/plain": [
       "<Figure size 504x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.cm import ScalarMappable\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(7,5))\n",
    "\n",
    "number_of_evals = 500\n",
    "df_dynas = pd.read_csv('results_transformerlt_macs.csv')[:number_of_evals]\n",
    "df_dynas.columns = ['config', 'date', 'lat', 'macs', 'top1']\n",
    "\n",
    "cm = plt.cm.get_cmap('viridis_r')\n",
    "count = [x for x in range(len(df_dynas))]\n",
    "\n",
    "ax.scatter(df_dynas['macs'].values, df_dynas['top1'].values, marker='^', alpha=0.8, c=count, \n",
    "           cmap=cm, label='Discovered DNN Model', s=10)\n",
    "ax.set_title(f'Intel® Neural Compressor\\nDynamic NAS (DyNAS)\\nSupernet:{config.dynas.supernet}')\n",
    "ax.set_xlabel('MACs', fontsize=13)\n",
    "ax.set_ylabel('BLEU Score (%)', fontsize=13)\n",
    "ax.legend(fancybox=True, fontsize=10, framealpha=1, borderpad=0.2, loc='lower right')\n",
    "ax.grid(True, alpha=0.3)\n",
    "\n",
    "# Eval Count bar\n",
    "norm = plt.Normalize(0, len(df_dynas))\n",
    "sm = ScalarMappable(norm=norm, cmap=cm)\n",
    "cbar = fig.colorbar(sm, ax=ax, shrink=0.85)\n",
    "cbar.ax.set_title(\"         Evaluation\\n  Count\", fontsize=8)\n",
    "\n",
    "fig.tight_layout(pad=2)\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# References"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[1] Cai, H., Gan, C., & Han, S. (2020). Once for All: Train One Network and Specialize it for Efficient Deployment. ArXiv, abs/1908.09791.   \n",
    "[2] K. Deb, A. Pratap, S. Agarwal and T. Meyarivan, \"A fast and elitist multiobjective genetic algorithm: NSGA-II,\" in IEEE Transactions on Evolutionary Computation, vol. 6, no. 2, pp. 182-197, April 2002, doi: 10.1109/4235.996017. \n",
    "[3] Cummings, D., Sarah, A., Sridhar, S.N., Szankin, M., Muñoz, J.P., & Sundaresan, S. (2022). A Hardware-Aware Framework for Accelerating Neural Architecture Search Across Modalities. ArXiv, abs/2205.10358.   \n",
    "[4] He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep Residual Learning for Image Recognition. 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 770-778.  \n",
    "[5] Howard, A.G., Sandler, M., Chu, G., Chen, L., Chen, B., Tan, M., Wang, W., Zhu, Y., Pang, R., Vasudevan, V., Le, Q.V., & Adam, H. (2019). Searching for MobileNetV3. 2019 IEEE/CVF International Conference on Computer Vision (ICCV), 1314-1324.    \n",
    "[6] Wang, H., Wu, Z., Liu, Z., Cai, H., Zhu, L., Gan, C. and Han, S., 2020. Hat: Hardware-aware transformers for efficient natural language processing. arXiv preprint arXiv:2005.14187.    \n",
    "[7] Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A.N., Kaiser, Ł. and Polosukhin, I., 2017. Attention is all you need. Advances in neural information processing systems, 30."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "inc",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.16"
  },
  "vscode": {
   "interpreter": {
    "hash": "c2dbf87a8472c6d86bd647c91aa9b84fad9e36d232f8960b9c95f4b4c2c16937"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
